//
//  ServerTimeSync.swift
//  weile
//
//  Created by LKM on 16/10/5.
//  Copyright © 2016年 LKM. All rights reserved.
//

import UIKit
import Foundation

class ServerTimeSync: NSObject {
    private static let mServerTimeSync=ServerTimeSync();
    
    class func getInstance()->ServerTimeSync{
        return mServerTimeSync;
    }
    
    
    private var timeDifference:Int64=0;//本地相对于服务器的时差.是本地减去服务器得
    
    public func getServerCurTime()->Int64{
        objc_sync_enter(self)
        //假设localTime快 那么就是+n  减去刚好咯
        let ct =  ServerTimeSync.currentTimeMillis() - timeDifference;//(localTime-serverTime);
    
        objc_sync_enter(self)
        return ct;
    }
    
    /**
     * @param loadDuration 网络加载耗费得时间
     * @param localTime 网络加载后的本地时间
     * @param serverTime 返回得服务器时间
     */
    public func setNetLoadServerTime( loadDuration:Int64, localTime:Int64, serverTime:Int64){
        objc_sync_enter(self)
        
        let hs=loadDuration/2;//不知道网络(服务器处理)延迟详细,就认为一去一回延迟得时间相等吧;
        
        let tt=localTime-hs;//得到跟 serverTime 同个时间点.本地得时间
        
        //同个时间点  两个时间进行比较才有意义.
        timeDifference=tt-serverTime;
    }
    
    /**
     得到当前本地的时间
     */
    class func currentTimeMillis()->Int64{
    
        //真正的精确到毫秒
        return  (Int64(NSDate().timeIntervalSince1970*1000 ));
    }
}
